/*
*
* DModeManager
*
* Creates and stores DMode objects and current dMode
*
*/
class DModeManager{
  
  // --------------------------------------------------
  // attributes
  // --------------------------------------------------
  ArrayList<DMode> dModes;
  DModeGroup masterDMG;
  int dMode;
  int maxMode;
  
  // --------------------------------------------------
  // constructor
  // --------------------------------------------------
  DModeManager(Poll[] polls) {
    
    dMode = 0;                   // set drawing mode to "default" value
    maxMode = 0;                 // set max/min mode to "relative" setting
    dModes = new ArrayList<DMode>();
    masterDMG = new DModeGroup("master");
    
    // create drawing modes and drawing mode groups
    
    // polls
    dModes.add(new DMode("Polls", polls, ColourTable.BLACK, "", false, 0, 100, maxMode));
    masterDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() - 1));
        
    // poll metrics
    DModeGroup pollMetricsDMG = new DModeGroup("Poll metrics");

    dModes.add(new DMode("Voter turnourt", polls, ColourTable.ORANGES, "voterTurnout", true, 0, 100, maxMode));
    pollMetricsDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() - 1));
    dModes.add(new DMode("Eligible voters", polls, ColourTable.ORANGES, "eligibleVoters", true, 0, 100, 2));
    pollMetricsDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() - 1));
    dModes.add(new DMode("Voter density (persons/km2)", polls, ColourTable.ORANGES, "voterDensity", true, 0, 100, 2));
    pollMetricsDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() - 1));
    
    masterDMG.addChild(pollMetricsDMG);
    
    // BELOW DRAWING MODES GENERATED AUTOMATICALLY WITH RUBY SCRIPT genCalculatedMVCode.rb
    
    // mayoral voting percentages

    DModeGroup mayorRacesDMG = new DModeGroup("Mayor");

    dModes.add(new DMode("Percentage Bonar", polls, ColourTable.PURPLES, "bonarPercent", true, 0, 100, maxMode));
    mayorRacesDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() - 1));
    dModes.add(new DMode("Percentage Dorward", polls, ColourTable.PURPLES, "dorwardPercent", true, 0, 100, maxMode));
    mayorRacesDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() - 1));
    dModes.add(new DMode("Percentage Dowling", polls, ColourTable.PURPLES, "dowlingPercent", true, 0, 100, maxMode));
    mayorRacesDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() - 1));
    dModes.add(new DMode("Percentage Dromarsky", polls, ColourTable.PURPLES, "dromarskyPercent", true, 0, 100, maxMode));
    mayorRacesDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() - 1));
    dModes.add(new DMode("Percentage Ligertwood", polls, ColourTable.PURPLES, "ligertwoodPercent", true, 0, 100, maxMode));
    mayorRacesDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() - 1));
    dModes.add(new DMode("Percentage Lineker", polls, ColourTable.PURPLES, "linekerPercent", true, 0, 100, maxMode));
    mayorRacesDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() - 1));
    dModes.add(new DMode("Percentage Mandel", polls, ColourTable.PURPLES, "mandelPercent", true, 0, 100, maxMode));
    mayorRacesDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() - 1));

    // council and schoolboard voting percentages

    DModeGroup councilRacesDMG = new DModeGroup("Council");
    DModeGroup psbRacesDMG = new DModeGroup("Public School Board");
    DModeGroup csbRacesDMG = new DModeGroup("Catholic School Board");

    DModeGroup ward1DMG = new DModeGroup("Ward 1");
    DModeGroup ward2DMG = new DModeGroup("Ward 2");
    DModeGroup ward3DMG = new DModeGroup("Ward 3");
    DModeGroup ward4DMG = new DModeGroup("Ward 4");
    DModeGroup ward5DMG = new DModeGroup("Ward 5");
    DModeGroup ward6DMG = new DModeGroup("Ward 6");
    DModeGroup ward7DMG = new DModeGroup("Ward 7");
    DModeGroup ward8DMG = new DModeGroup("Ward 8");
    DModeGroup ward9DMG = new DModeGroup("Ward 9");
    DModeGroup ward10DMG = new DModeGroup("Ward 10");
    DModeGroup ward11DMG = new DModeGroup("Ward 11");
    DModeGroup ward12DMG = new DModeGroup("Ward 12");
    DModeGroup ward71DMG = new DModeGroup("Ward 71");
    DModeGroup ward72DMG = new DModeGroup("Ward 72");
    DModeGroup ward73DMG = new DModeGroup("Ward 73");
    DModeGroup ward74DMG = new DModeGroup("Ward 74");
    DModeGroup ward75DMG = new DModeGroup("Ward 75");
    DModeGroup ward76DMG = new DModeGroup("Ward 76");
    DModeGroup ward77DMG = new DModeGroup("Ward 77");
    DModeGroup wardADMG = new DModeGroup("Ward A");
    DModeGroup wardBDMG = new DModeGroup("Ward B");
    DModeGroup wardCDMG = new DModeGroup("Ward C");
    DModeGroup wardDDMG = new DModeGroup("Ward D");
    DModeGroup wardEDMG = new DModeGroup("Ward E");
    DModeGroup wardFDMG = new DModeGroup("Ward F");
    DModeGroup wardGDMG = new DModeGroup("Ward G");
    DModeGroup wardHDMG = new DModeGroup("Ward H");
    DModeGroup wardIDMG = new DModeGroup("Ward I");

    dModes.add(new DMode("Percentage Knack", polls, ColourTable.REDS, "knackPercent", true, 0, 100, maxMode));
    ward1DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Post", polls, ColourTable.REDS, "postPercent", true, 0, 100, maxMode));
    ward1DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Sloan", polls, ColourTable.REDS, "sloanPercent", true, 0, 100, maxMode));
    ward1DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Hinderks", polls, ColourTable.REDS, "hinderksPercent", true, 0, 100, maxMode));
    ward2DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Koziak", polls, ColourTable.REDS, "koziakPercent", true, 0, 100, maxMode));
    ward2DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Krushell", polls, ColourTable.REDS, "krushellPercent", true, 0, 100, maxMode));
    ward2DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Malone-richards", polls, ColourTable.REDS, "maloneRichardsPercent", true, 0, 100, maxMode));
    ward2DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Tupper", polls, ColourTable.REDS, "tupperPercent", true, 0, 100, maxMode));
    ward2DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Waddy", polls, ColourTable.REDS, "waddyPercent", true, 0, 100, maxMode));
    ward2DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Cassady", polls, ColourTable.REDS, "cassadyPercent", true, 0, 100, maxMode));
    ward3DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Demers", polls, ColourTable.REDS, "demersPercent", true, 0, 100, maxMode));
    ward3DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Fairbridge", polls, ColourTable.REDS, "fairbridgePercent", true, 0, 100, maxMode));
    ward3DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Loken", polls, ColourTable.REDS, "lokenPercent", true, 0, 100, maxMode));
    ward3DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Naboulsi", polls, ColourTable.REDS, "naboulsiPercent", true, 0, 100, maxMode));
    ward3DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Oplanich", polls, ColourTable.REDS, "oplanichPercent", true, 0, 100, maxMode));
    ward3DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Siver", polls, ColourTable.REDS, "siverPercent", true, 0, 100, maxMode));
    ward3DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Sobolewski", polls, ColourTable.REDS, "sobolewskiPercent", true, 0, 100, maxMode));
    ward3DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Suess", polls, ColourTable.REDS, "suessPercent", true, 0, 100, maxMode));
    ward3DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Atkinson", polls, ColourTable.REDS, "atkinsonPercent", true, 0, 100, maxMode));
    ward4DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Backs", polls, ColourTable.REDS, "backsPercent", true, 0, 100, maxMode));
    ward4DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Gibbons", polls, ColourTable.REDS, "gibbonsPercent", true, 0, 100, maxMode));
    ward4DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Goma", polls, ColourTable.REDS, "gomaPercent", true, 0, 100, maxMode));
    ward4DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Robb", polls, ColourTable.REDS, "robbPercent", true, 0, 100, maxMode));
    ward4DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Bergeron", polls, ColourTable.REDS, "bergeronPercent", true, 0, 100, maxMode));
    ward5DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Grandish", polls, ColourTable.REDS, "grandishPercent", true, 0, 100, maxMode));
    ward5DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Kendrick", polls, ColourTable.REDS, "kendrickPercent", true, 0, 100, maxMode));
    ward5DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Leibovici", polls, ColourTable.REDS, "leiboviciPercent", true, 0, 100, maxMode));
    ward5DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Basualdo", polls, ColourTable.REDS, "basualdoPercent", true, 0, 100, maxMode));
    ward6DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Batty", polls, ColourTable.REDS, "battyPercent", true, 0, 100, maxMode));
    ward6DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Frost", polls, ColourTable.REDS, "frostPercent", true, 0, 100, maxMode));
    ward6DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Johnson", polls, ColourTable.REDS, "johnsonPercent", true, 0, 100, maxMode));
    ward6DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Kapitza", polls, ColourTable.REDS, "kapitzaPercent", true, 0, 100, maxMode));
    ward6DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Permann", polls, ColourTable.REDS, "permannPercent", true, 0, 100, maxMode));
    ward6DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Pirbhai", polls, ColourTable.REDS, "pirbhaiPercent", true, 0, 100, maxMode));
    ward6DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Roberts", polls, ColourTable.REDS, "robertsPercent", true, 0, 100, maxMode));
    ward6DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Caterina", polls, ColourTable.REDS, "caterinaPercent", true, 0, 100, maxMode));
    ward7DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Mckeen", polls, ColourTable.REDS, "mckeenPercent", true, 0, 100, maxMode));
    ward7DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Pullishy", polls, ColourTable.REDS, "pullishyPercent", true, 0, 100, maxMode));
    ward7DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Rolls", polls, ColourTable.REDS, "rollsPercent", true, 0, 100, maxMode));
    ward7DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Alstine", polls, ColourTable.REDS, "alstinePercent", true, 0, 100, maxMode));
    ward7DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Striker", polls, ColourTable.REDS, "strikerPercent", true, 0, 100, maxMode));
    ward8DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Henderson", polls, ColourTable.REDS, "hendersonPercent", true, 0, 100, maxMode));
    ward8DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Jeffery-heaney", polls, ColourTable.REDS, "jefferyHeaneyPercent", true, 0, 100, maxMode));
    ward8DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Mckay", polls, ColourTable.REDS, "mckayPercent", true, 0, 100, maxMode));
    ward8DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Razga", polls, ColourTable.REDS, "razgaPercent", true, 0, 100, maxMode));
    ward8DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Anderson", polls, ColourTable.REDS, "andersonPercent", true, 0, 100, maxMode));
    ward9DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Bader", polls, ColourTable.REDS, "baderPercent", true, 0, 100, maxMode));
    ward9DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Lim", polls, ColourTable.REDS, "limPercent", true, 0, 100, maxMode));
    ward9DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Watts", polls, ColourTable.REDS, "wattsPercent", true, 0, 100, maxMode));
    ward9DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Iveson", polls, ColourTable.REDS, "ivesonPercent", true, 0, 100, maxMode));
    ward10DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Slemko", polls, ColourTable.REDS, "slemkoPercent", true, 0, 100, maxMode));
    ward10DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Bergdahl", polls, ColourTable.REDS, "bergdahlPercent", true, 0, 100, maxMode));
    ward11DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Diotte", polls, ColourTable.REDS, "diottePercent", true, 0, 100, maxMode));
    ward11DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Luthra", polls, ColourTable.REDS, "luthraPercent", true, 0, 100, maxMode));
    ward11DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Maglalang", polls, ColourTable.REDS, "maglalangPercent", true, 0, 100, maxMode));
    ward11DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Okelu", polls, ColourTable.REDS, "okeluPercent", true, 0, 100, maxMode));
    ward11DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Schaffrick", polls, ColourTable.REDS, "schaffrickPercent", true, 0, 100, maxMode));
    ward11DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Bagga", polls, ColourTable.REDS, "baggaPercent", true, 0, 100, maxMode));
    ward12DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Horn", polls, ColourTable.REDS, "hornPercent", true, 0, 100, maxMode));
    ward12DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Mckenna", polls, ColourTable.REDS, "mckennaPercent", true, 0, 100, maxMode));
    ward12DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Sohi", polls, ColourTable.REDS, "sohiPercent", true, 0, 100, maxMode));
    ward12DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Kallal", polls, ColourTable.GREENS, "kallalPercent", true, 0, 100, maxMode));
    ward71DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Ochoa", polls, ColourTable.GREENS, "ochoaPercent", true, 0, 100, maxMode));
    ward71DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Grell", polls, ColourTable.GREENS, "grellPercent", true, 0, 100, maxMode));
    ward72DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Kowalczyk", polls, ColourTable.GREENS, "kowalczykPercent", true, 0, 100, maxMode));
    ward72DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Smiley", polls, ColourTable.GREENS, "smileyPercent", true, 0, 100, maxMode));
    ward72DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Bossmin-davis", polls, ColourTable.GREENS, "bossminDavisPercent", true, 0, 100, maxMode));
    ward73DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Chahal", polls, ColourTable.GREENS, "chahalPercent", true, 0, 100, maxMode));
    ward73DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Olsen", polls, ColourTable.GREENS, "olsenPercent", true, 0, 100, maxMode));
    ward73DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Engel", polls, ColourTable.GREENS, "engelPercent", true, 0, 100, maxMode));
    ward74DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Lohner", polls, ColourTable.GREENS, "lohnerPercent", true, 0, 100, maxMode));
    ward74DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Acheson", polls, ColourTable.GREENS, "achesonPercent", true, 0, 100, maxMode));
    ward75DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Arcilla", polls, ColourTable.GREENS, "arcillaPercent", true, 0, 100, maxMode));
    ward75DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Friesen", polls, ColourTable.GREENS, "friesenPercent", true, 0, 100, maxMode));
    ward75DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Bergstra", polls, ColourTable.GREENS, "bergstraPercent", true, 0, 100, maxMode));
    ward76DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Heisler", polls, ColourTable.GREENS, "heislerPercent", true, 0, 100, maxMode));
    ward76DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Savaryn", polls, ColourTable.GREENS, "savarynPercent", true, 0, 100, maxMode));
    ward76DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Schwabenbauer", polls, ColourTable.GREENS, "schwabenbauerPercent", true, 0, 100, maxMode));
    ward76DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Kinal", polls, ColourTable.GREENS, "kinalPercent", true, 0, 100, maxMode));
    ward77DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Pelech", polls, ColourTable.GREENS, "pelechPercent", true, 0, 100, maxMode));
    ward77DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Thibert", polls, ColourTable.GREENS, "thibertPercent", true, 0, 100, maxMode));
    ward77DMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Johner", polls, ColourTable.BLUES, "johnerPercent", true, 0, 100, maxMode));
    wardADMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Koopmans", polls, ColourTable.BLUES, "koopmansPercent", true, 0, 100, maxMode));
    wardADMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Warner", polls, ColourTable.BLUES, "warnerPercent", true, 0, 100, maxMode));
    wardADMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Beisiegel", polls, ColourTable.BLUES, "beisiegelPercent", true, 0, 100, maxMode));
    wardBDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Chahal", polls, ColourTable.BLUES, "chahal_1Percent", true, 0, 100, maxMode));
    wardBDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Lagerquist", polls, ColourTable.BLUES, "lagerquistPercent", true, 0, 100, maxMode));
    wardBDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Nicholson", polls, ColourTable.BLUES, "nicholsonPercent", true, 0, 100, maxMode));
    wardBDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Shipka", polls, ColourTable.BLUES, "shipkaPercent", true, 0, 100, maxMode));
    wardBDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Gradisar", polls, ColourTable.BLUES, "gradisarPercent", true, 0, 100, maxMode));
    wardCDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Henshall", polls, ColourTable.BLUES, "henshallPercent", true, 0, 100, maxMode));
    wardCDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Spencer", polls, ColourTable.BLUES, "spencerPercent", true, 0, 100, maxMode));
    wardCDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Colburn", polls, ColourTable.BLUES, "colburnPercent", true, 0, 100, maxMode));
    wardDDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Macdonald", polls, ColourTable.BLUES, "macdonaldPercent", true, 0, 100, maxMode));
    wardEDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Mackenzie", polls, ColourTable.BLUES, "mackenziePercent", true, 0, 100, maxMode));
    wardEDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Soroka", polls, ColourTable.BLUES, "sorokaPercent", true, 0, 100, maxMode));
    wardEDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Janz", polls, ColourTable.BLUES, "janzPercent", true, 0, 100, maxMode));
    wardFDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Rozmus", polls, ColourTable.BLUES, "rozmusPercent", true, 0, 100, maxMode));
    wardFDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Sawyer", polls, ColourTable.BLUES, "sawyerPercent", true, 0, 100, maxMode));
    wardFDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Hoffman", polls, ColourTable.BLUES, "hoffmanPercent", true, 0, 100, maxMode));
    wardGDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Rice", polls, ColourTable.BLUES, "ricePercent", true, 0, 100, maxMode));
    wardGDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Ripley", polls, ColourTable.BLUES, "ripleyPercent", true, 0, 100, maxMode));
    wardHDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Cleary", polls, ColourTable.BLUES, "clearyPercent", true, 0, 100, maxMode));
    wardIDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Jardine", polls, ColourTable.BLUES, "jardinePercent", true, 0, 100, maxMode));
    wardIDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));
    dModes.add(new DMode("Percentage Manhas", polls, ColourTable.BLUES, "manhasPercent", true, 0, 100, maxMode));
    wardIDMG.addChild(new DModeGroup((dModes.get(dModes.size() - 1)), dModes.size() -1));

    councilRacesDMG.addChild(ward1DMG);
    councilRacesDMG.addChild(ward2DMG);
    councilRacesDMG.addChild(ward3DMG);
    councilRacesDMG.addChild(ward4DMG);
    councilRacesDMG.addChild(ward5DMG);
    councilRacesDMG.addChild(ward6DMG);
    councilRacesDMG.addChild(ward7DMG);
    councilRacesDMG.addChild(ward8DMG);
    councilRacesDMG.addChild(ward9DMG);
    councilRacesDMG.addChild(ward10DMG);
    councilRacesDMG.addChild(ward11DMG);
    councilRacesDMG.addChild(ward12DMG);
    csbRacesDMG.addChild(ward71DMG);
    csbRacesDMG.addChild(ward72DMG);
    csbRacesDMG.addChild(ward73DMG);
    csbRacesDMG.addChild(ward74DMG);
    csbRacesDMG.addChild(ward75DMG);
    csbRacesDMG.addChild(ward76DMG);
    csbRacesDMG.addChild(ward77DMG);
    psbRacesDMG.addChild(wardADMG);
    psbRacesDMG.addChild(wardBDMG);
    psbRacesDMG.addChild(wardCDMG);
    psbRacesDMG.addChild(wardDDMG);
    psbRacesDMG.addChild(wardEDMG);
    psbRacesDMG.addChild(wardFDMG);
    psbRacesDMG.addChild(wardGDMG);
    psbRacesDMG.addChild(wardHDMG);
    psbRacesDMG.addChild(wardIDMG);

    masterDMG.addChild(mayorRacesDMG);
    masterDMG.addChild(councilRacesDMG);
    masterDMG.addChild(psbRacesDMG);
    masterDMG.addChild(csbRacesDMG);


    
  } // constructor
  
  // --------------------------------------------------
  // setDMode
  // --------------------------------------------------
  void setDMode(int i) {
    
    dMode = i;
    
  } // setDMode
  
  // --------------------------------------------------
  // getDMode
  // --------------------------------------------------
  DMode getDMode() {
    
    //return (DMode) dModes.get(dMode);
    return dModes.get(dMode);
    
  } // getDMode
  
  // --------------------------------------------------
  // switchMMMode
  // --------------------------------------------------
  void switchMMMode() {
    
    // toggle maxMode value
    maxMode = (maxMode == 0) ? 1 : 0;
    
    // iterate through list of drawing modes and toggle
    DMode temp;
    
    for(int i = 0; i < dModes.size(); i++) {
//      temp = ((DMode) dModes.get(i));
      temp = dModes.get(i);
      temp.switchMMMode();
      dModes.set(i, temp);

    } // for
    
  } // switchMMMode
  
} // DModeManager
